package com.baizhi.aop;

import org.aspectj.lang.annotation.*;
import org.springframework.context.annotation.Configuration;

/**
 *@Configuration 定义当前类为配置类，意味着当前类中 是一个工厂的环境
 * 类中创建的增强类 切面类 会自动被放入工厂中
 */
@Configuration
/**
 * 3、定义当前类为切面类
 * 会自动的编制 切入点和增强
 */
@Aspect
public class TestAop {
    /**
     * 1、定义切入点
     *@Pointcut("execution(* com.baizhi.service.*.*(..))") 参数是切点表达式 定义切点
     * 加注解的这个方法 空实现 不要返回值
     * 切点的名字 是方法名
     */
    @Pointcut("execution(* com.baizhi.service.*.*(..))")
    public void testPointCut(){}

    /**
     * 2、定义增强
     * 增强和切入点建立了联系
     * @After("testPointCut()") 后置增强 参数是 切点方法 方法名（）
     *@Before() 前置
     *@Around() 环绕
     *@AfterThrowing 异常
     */


    @After("testPointCut()")
    public void testAfter(){
        System.out.println("方法执行结束");
    }
}
